import axios from "axios";
import QS from "qs";

// 通过脚手架项目转换模式变量，判断在不同模式下请求地址前缀不同
const mode={
    "development":"/api",
    "production":"http://localhost",
    "test":"",
    "unit":""
}
axios.defaults.baseURL=mode[process.env.NODE_ENV];
//统一管理请求地址
const URL = {
    // loadFilmType: "http://localhost/filmApi/loadTyps.php",
    // loadFilmByTypeId: "http://localhost/filmApi/loadFilms.php",
    // loadFilmDetailByFilmId: "http://localhost/filmApi/loadFilmById.php",
    // loadCommentByFilmId: "http://localhost/filmApi/loadComments.php",
    // addComment: "http://localhost/filmApi/addComment.php",
    loadFilmType: "/filmApi/loadTyps.php",
    loadFilmByTypeId: "/filmApi/loadFilms.php",
    loadFilmDetailByFilmId: "/filmApi/loadFilmById.php",
    loadCommentByFilmId: "/filmApi/loadComments.php",
    addComment: "/filmApi/addComment.php",
}

//统一管理请求参数
let getFilmByTypeId = function (obj) {
    return QS.stringify(obj);
}
let getFilmDetailById=function(obj){//这两种post请求参数管理方式都可以
    let formdata=new FormData();
    for(let key in obj){
        formdata.append(key,obj[key]);
    };
    return formdata;
}

let error =function(error){
    // console.log(error);
    // console.log(error.message);//undefined
    // showMsg(error.message);//调用window下的全局统一提示插件
    showMsg(error);
}
//统一管理请求模式

//统一管理请求结果
//1、
let loadTypes = function () {//then的return值是下一个then的实参
    return axios.post(URL.loadFilmType)
        .then(({statusText,data})=>{
            if(statusText!="OK"){
                return Promise.reject("网络不通");
            }
            return data;
        })
        .catch(error)
}

let loadFilms=function(params){
    return axios.post(URL.loadFilmByTypeId,getFilmByTypeId(params))
        .then(({statusText,data})=>{
            if(statusText!="OK"){
                return Promise.reject("网络不通");
            }
            return data;
        })
        .catch(error)
}

let loadFilmDetail=function(params){
    return axios.post(URL.loadFilmDetailByFilmId,getFilmDetailById(params))
        .then(({statusText,data})=>{
            if(statusText!="OK"){
                return Promise.reject("网络不通");
            }
            return data;
        })
        .catch(error)
}

let loadFilmComments=function(params){
    return axios.get(URL.loadCommentByFilmId,{
        params:params
    }).then(({statusText,data})=>{
        if(statusText!="OK"){
            return Promise.reject("网络不通");
        }
        return data;
    }).catch(error)
}

export default {
    install:function(Vue){
        Vue.prototype.$api={
            loadTypes,
            loadFilms,
            loadFilmDetail,
            loadFilmComments
        }
        Vue.prototype.$error=error
    }
}